#include <QMessageBox>
#include <KZip>
+#include <chrono>
namespace {
struct ZipEntry {
{
_ui->setupUi(this);
+ _ui->labelInterval->setOpenExternalLinks(true);
+
connect(_ui->serverNotificationsCheckBox, &QAbstractButton::toggled,
this, &GeneralSettings::slotToggleOptionalServerNotifications);
_ui->serverNotificationsCheckBox->setToolTip(tr("Server notifications that require attention."));
connect(_ui->stopExistingFolderNowBigSyncCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings);
connect(_ui->newExternalStorage, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings);
connect(_ui->moveFilesToTrashCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings);
-
+ connect(_ui->remotePollIntervalSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &GeneralSettings::slotRemotePollIntervalChanged);
+ connect(_ui->remotePollIntervalCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotRemotePollIntervalCheckBoxToggled);
#ifndef WITH_CRASHREPORTER
_ui->crashreporterCheckBox->setVisible(false);
#endif
_ui->stopExistingFolderNowBigSyncCheckBox->setChecked(_ui->existingFolderLimitCheckBox->isChecked() && cfgFile.stopSyncingExistingFoldersOverLimit());
_ui->newExternalStorage->setChecked(cfgFile.confirmExternalStorage());
_ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons());
+
+
+ bool hasCustomInterval = cfgFile.hasRemotePollInterval();
+ _ui->remotePollIntervalCheckBox->setChecked(hasCustomInterval);
+ auto interval = cfgFile.remotePollInterval();
+ _ui->remotePollIntervalSpinBox->setValue(static_cast<int>(interval.count() / 1000));
+ _ui->remotePollIntervalSpinBox->setEnabled(hasCustomInterval);
}
#if defined(BUILD_UPDATER)
#endif
}
+void GeneralSettings::slotRemotePollIntervalCheckBoxToggled(bool checked) {
+ _ui->remotePollIntervalSpinBox->setEnabled(checked); // Enable/disable the spin box
+
+ ConfigFile cfgFile;
+
+ if (checked) {
+ slotRemotePollIntervalChanged(_ui->remotePollIntervalSpinBox->value());
+ } else {
+ // Reset to default interval when unchecked
+ cfgFile.resetRemotePollInterval();
+
+ // Update the spinbox with the default value
+ auto interval = cfgFile.remotePollInterval();
+ _ui->remotePollIntervalSpinBox->setValue(static_cast<int>(interval.count() / 1000));
+ }
+}
+
+void GeneralSettings::slotRemotePollIntervalChanged(int seconds) {
+ if (_currentlyLoading) return;
+
+ if (_ui->remotePollIntervalCheckBox->isChecked()) {
+ ConfigFile cfgFile;
+ std::chrono::milliseconds interval(seconds * 1000);
+ cfgFile.setRemotePollInterval(interval);
+ }
+}
+
} // namespace OCC
</item>
</layout>
</item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_remotePollInterval">
+ <item>
+ <widget class="QCheckBox" name="remotePollIntervalCheckBox">
+ <property name="text">
+ <string>Server poll interval</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="remotePollIntervalSpinBox">
+ <property name="minimum">
+ <number>30</number>
+ </property>
+ <property name="maximum">
+ <number>3600</number>
+ </property>
+ <property name="singleStep">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="labelInterval">
+ <property name="text">
+ <string extracomment="Trailing part of "Server poll interval" ">seconds (if <a href="https://github.com/nextcloud/notify_push">Client Push</a> is unavailable)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_remotePollInterval">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_trash">
<item>
_discoveredLegacyConfigPath = discoveredLegacyConfigPath;
}
+bool ConfigFile::hasRemotePollInterval(const QString &connection) const
+{
+ QString con(connection);
+ if (connection.isEmpty())
+ con = defaultConnection();
+
+ QSettings settings(configFile(), QSettings::IniFormat);
+ settings.beginGroup(con);
+
+ return settings.contains(QLatin1String(remotePollIntervalC));
+}
+
+void ConfigFile::resetRemotePollInterval(const QString &connection) {
+ QString con(connection);
+ if (connection.isEmpty())
+ con = defaultConnection();
+
+ std::chrono::milliseconds defaultInterval(DEFAULT_REMOTE_POLL_INTERVAL);
+ setRemotePollInterval(defaultInterval, con); // Use existing method
+}
+
}